// 给定一个已排序的链表的头head,要求删除原始链表中所有重复数字的节点，只留下不同的数字，返回已排序的链表

// 思路：这里要把所有相同的节点删掉，用虚拟节点开始遍历，当前节点是唯一值节点，判断下一个和下下一个的值比较，如果相同则循环判断
// 时间复杂度：O(n)
// 空间复杂度：O(1)

const { LinkedList, ListNode} = require('./64.设计链表')

function deleteDuplicates(head) {
    let dummyHead = new ListNode(0, head)
    let cur = dummyHead
    while (cur.next && cur.next.next) {
        if (cur.next.val === cur.next.next.val) {
            // 接着判断后面的元素是否相等
            let temp = cur.next
            while (temp && temp.next && temp.val === temp.next.val) {
                temp = temp.next
            }
            cur.next = temp.next
        } else {
            cur = cur.next
        }
    }
    return dummyHead.next
}

let head = [1, 1, 1, 2, 3]
let node = new LinkedList(head)
console.log(deleteDuplicates(node.head));